home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-11-29 | 68.5 KB | 1,930 lines |
- Abstract
- --------
- GLE is a high quality graphics package for scientists,
- combining a user friendly interface with a full range of
- facilities for producing publication quality graphs,
- diagrams, posters and slides.
-
- GLE provides LaTeXquality fonts together with a flexible
- graphics module which allows the user to specify any
- feature of a graph (down to the line width of the subticks,
- for example)
-
- Complex pictures can be drawn with user defined subroutines
- and simple looping structures.
-
- Current device drivers support DECWINDOWS, REGIS, TEK4010,
- all PC graphics cards, VT100s, HP-Plotters, PostScript
- Printers, EPSON Printers and LaserJet Printers.
-
- GLE runs on both VAXes and PCs, giving an identical user
- interface on both platforms.
-
-
- GLE Installation on a PC
- ------------------------
- To install GLE, put the distribution disk into drive a: and
- type:
-
- a:install
-
- GLE requires at least 800K of disk space for a minimal
- installation and 3.3M for a full installation (including
- all device drivers and fonts).
-
- GLE also requires 530K or more of free memory. Use the DOS
- command CHKDSK to check this figure. If you don't have
- enough then take copies of your AUTOEXEC.BAT and CONFIG.SYS
- files and then remove as much as possible from these files.
-
- GLE may work with less memory depending on what you are
- drawing.
-
- The installation disk contains a version of CGLE which will
- make use of epanded memory. This version can run with 70K
- less memory but if you don't have expanded memory then it
- has to use your hard disk instead which is a great deal
- slower.
-
- Running GLE
- -----------
- To get GLE running interactively you must be on a
- VAXstation, graphics terminal, or PC. If you are using a PC
- you should make certain you have an up to date copy of GLE
- (ask via VAX-mail to GRV::SRGHCXP or InterNET
- srghcxp@grv.dsir.govt.nz)
-
- Running GLE on a PC
- -------------------
- The command to run GLE is:
-
- C:\GLE> cgle myfile.gle
-
- Note: the command is `CGLE' not `GLE' but the directory is
- `GLE', this is for historical reasons.
-
- To print a GLE file to the laser printer you would type:
-
- C:> psgle myfile
- C:> print myfile.ps
-
- To produce an .eps file for inclusion in WordPerfect you
- would type:
-
- C:> psgle myfile /eps
-
- This will create a file called myfile.EPS.
-
- If your PC is connected to a VAX computer which has a
- PostScript printer you may copy MYFILE.PS to the VAX using
- a standard file transfer program (e.g. FTP, KERMIT, VDISK)
-
- The best way to see what GLE can do is to have a play with
- it, simply start it up and try out some of the examples:
-
- Press F3 (Load file)
- Press <enter> (for a menu of GLE files)
- Use arrow keys to select example, then press <enter>
- Press F10 to draw the picture
- Press ESC to get back to the GLE editor.
- ...
- When you find a graph try pressing F9 and modifying
- one of the fields (use F1 for an explanation of each
- field).
-
- Running GLE on a VAX
- --------------------
- The command to run GLE is:
-
- $ cgle myfile.gle
- $ cgle myfile.gle /dev=regis
- $ cgle myfile.gle /dev=x
-
- See the directory CGLE_EXAMPLES: for examples and
- templates. To get access to these files from the GLE menus
- use the commands:
-
- $ define workarea sys$login:,cgle_examples:
- $ set default workarea:
- $ cgle stack4b.gle ! or any other example
-
- If your keyboard doesn't have the function keys F9 thru F14
- you can use GOLD (PF1) followed by the numbers 9,0,1,2,3,4
- (on the top of the QWERTYUIOP keypad).
-
- Keyboard Mappings:
-
- VT100 VT200 PC Meaning
- GOLD 1 F11 F1 Help
- GOLD 2 F12 F2 Save
- GOLD 3 F13 F3 Load
- GOLD 4 F14 F4 Save-as
- GOLD 9 F9 F9 Graph-menu
- GOLD 0 F10 F10 Draw-it
- Control+Z Control+Z Control+Z Exit/Escape
- Alt+X Exit/Escape
- Control+E Control+E Calls VAX EDT
- Control+F Control+F Toggle fast/slow text
- Control+R Control+R F5 Shows errors
- Control+S Shells to DOS
-
- Supported devices: VT100, REGIS (VT125, VT240), TEK4010,
- VWS, XWindows.
-
- Supported output: PostScript, HPGL, Epson, Epson 24pin, HP
- Deskjet.
-
- To create a PostScript output file (.PS) and automatically
- print it to the LASER queue you would type:
-
- $ cgle myfile /print
-
- To produce an .eps file for inclusion in LaTeXyou would
- type:
-
- $ cgle myfile /dev=eps
-
- To produce a .ps file suitable for printing to a laser
- writer type:
-
- $ cgle myfile /dev=ps
-
- It didn't work, bugs!!!
- -----------------------
- If the installation fails, or one of the example GLE files
- fails to work then the most likely reason is a shortage of
- memory due to too many memory resident programs/drivers. To
- fix this remove these utilities from your autoexec.bat and
- config.sys files temporarily.
-
- There may well be a bug in your GLE file, try using the
- trace option to find the bug.
- On a PC:
-
- C:\GLE> psgle myfile /trace
-
- On a VAX:
-
- $ cgle myfile /dev=ps /trace
-
- Another reason for a failure is a bug in GLE, Please report
- bugs to Chris Pugmire (in%"srghcxp@grv.dsir.govt.nz",
- grv::srghcxp) so they can be fixed. If possible, try and
- find a way of repeating the problem, then send relevant GLE
- and data files with an outline of what is wrong.
-
- Drawing a Line on a Page
- ------------------------
- Let's start with drawing a line on the page. GLE has to
- know what size piece of paper you are working with. You can
- tell it by giving a size command:
-
- size 18 27
-
- This specifies a piece of paper 18cm wide and 27cm high.
- Now you must define a current point by moving to somewhere
- on the page:
-
- amove 2 4
-
- The origin (0,0) is at the bottom left hand corner of the
- page. Now suppose we wish to draw a line from this point
- across 1 cm and up 2 cm:
-
- size 18 27
- amove 2 4
- rline 1 2
-
- That was a relative movement as the x and y values were
- given as distances from the current point, alternatively we
- could have used absolute coordinates:
-
- size 18 27
- amove 2 4
- aline 3 6 ! absolute.
-
- Now if you want to draw some text on this page at the
- current point you would use the text command:
-
- text Hi there
-
- So we have now constructed an entire GLE program as
- follows, with the results illustrated below:
-
- size 12 8 box
- amove 2 4
- rline 1 2
- text Hi there
-
- Drawing a Simple Graph
- ----------------------
- This section will describe how to go about drawing a simple
- graph.
-
- The following data points are contained in a file called
- TUT.DAT
-
- x y
- ----- (These top two lines do not appear in the file)
- 1 2
- 2 6
- 3 2
- 4 5
- 5 9
-
- The data is in two columns with white space separating each
- column of numbers. The following commands will draw a
- simple line graph of the data.
-
- size 6 3
- begin graph
- size 6 3
- data tut.dat
- yaxis min 0
- d1 line marker star msize .2
- end graph
-
- The first size command defines the size of the piece of
- paper which may contain several graphs. The second defines
- the size of this particular graph. The actual graph axes
- are by default 0.7 of these dimensions. The ratio can be
- changed with the vscale and hscale commands.
-
- Without the "yaxis min 0" command the yaxis would start at
- 2.0, because that is the minimum y value in the data. This
- makes the graph easier to interpret.
-
- Changing the above d1 command to:
-
- d1 line marker circle
-
- will mark each data point with a circle instead of a star.
- See appendix A for a list of other marker names.
-
- A smooth line can be drawn between the data points by
- changing the d1 command to:
-
- d1 line marker circle smooth
-
- The order of the commands is not important, except that
- circle is a parameter for the qualifier marker and
- therefore must come straight after it. E.g., d1 [marker
- circle] [line smooth] [color blue]
-
- GLE Primitives
- --------------
- A GLE command is a sequence of keywords and values
- separated by white space (one or more spaces or tabs). Each
- command must begin on a new line. Keywords may not be
- abbreviated, the case is not significant. All coordinates
- are expressed in centimetres from the bottom left corner of
- the page.
-
- GLE uses the concept of a current point which most commands
- use. For example, the command aline 2 3 will draw a line
- from the current point to the coordinates (2,3).
-
- The current graphics state also includes other settings
- like line width, color, font, 2d transformation matrix. All
- of these can be set with various GLE commands.
-
- Graphics Primitives (a summary)
- -------------------------------
- ! comment
- @ xxx
- aline x y [arrow start] [arrow end] [arrow both]
- amove x y
- arc radius a1 a2
- arcto x1 y1 x2 y2 rad
- begin box [fill pattern] [add gap] [nobox] [name xyz]
- begin clip
- begin origin
- begin path [stroke] [fill pattern] [clip]
- begin rotate angle
- begin scale x y
- begin table
- begin text [width exp]
- begin translate x y
- bezier x1 y1 x2 y2 x3 y3
- bigfile filename.gle
- box x y [justify jtype] [fill color] [name xxx] [nobox]
- circle radius [fill pattern]
- closepath
- curve ix iy [ x1 y1 x y x y ... xn yn] ex ey
- define marker markername subroutine-name
- for var = exp1 to exp2 [step exp3] command [...] next var
- grestore
- gsave
- if exp then command [...] else command [...] end if
- include filename
- join object1.just sep object2.just
- marker marker-name [ scale-factor]
- postscript filename.eps width-exp height-exp
- rbezier x1 y1 x2 y2 x3 y3
- return exp
- reverse
- rline x y [arrow end] [arrow start] [arrow both]
- rmove x y
- save objectname
- set cap butt | round | square
- set color col
- set dashlen dashlen-exp
- set font font-name
- set fontlwidth line-width
- set hei character-size
- set join mitre | round | bevel
- set just left | center | right | tl | etc...
- set lstyle line-style
- set lwidth line-width
- sub sub-name paramter1 paramter2 etc
- text unquoted-text-string
- write string$
-
- Graphics Primitives (in detail)
- -------------------------------
-
- ! comment
- Indicates the start of a comment. GLE ignores everything
- from the exclamation point to the end of the line.
-
- @ xxx
- Executes subroutine xxx.
-
- aline x y [arrow start] [arrow end] [arrow both]
- Draws a line from the current point to the absolute
- coordinates (x,y), which then becomes the new current
- point. The arrow qualifiers are optional, they draw arrows
- at the start or end of the line, the size of the arrow is
- proportional to the current font height.
-
- amove x y
- Changes the current point to the absolute coordinates
- (x,y).
-
- arc radius a1 a2
- Draws an arc of a circle in the anti-clockwise direction,
- centered at the current point, of radius radius, starting
- at angle a1 and finishing at angle a2. Angles are specified
- in degrees. Zero degrees is at three o'clock and Ninety
- degrees is at twelve o'clock.
-
- arc 1.2 20 45
-
- The command narc is identical but draws the arc in the
- clockwise direction. This is important when constructing a
- path.
-
- arcto x1 y1 x2 y2 rad
- Draws a line from the current point to (x1,y1) then to
- (x2,y2) but fits an arc of radius rad joining the two
- vectors instead of a vertex at the point (x1,y1).
-
- begin block_name ... end block_name
- There are several block structured commands in GLE. Each
- begin must have a matching end. Blocks which change the
- current graphics state (e.g. scale, rotate, clip etc) will
- restore whatever they change at the end of the block.
- Indentation is optional but should be used to make the GLE
- program easier to read.
-
- begin box [fill pattern] [add gap] [nobox] [name xyz]
- Draws a box around everything between begin box and end
- box. The option add adds a margin of margin cm to each side
- of the box to make the box slightly larger than the area
- defined by the graphics primitives in the begin box end box
- group (to leave a gap around text for example). The option
- nobox stops the box outline from being drawn.
-
- The name option saves the coordinates of the box for later
- use with the join command.
-
- begin clip
- This saves the current clipping region. A clipping region
- is an arbitrary path made from lines and curves which
- defines the area on which drawing can occur. This is used
- to undo the effect of a clipping region defined with the
- begin path command. See the example CLIP.GLE in appendix B
- at the end of the manual.
-
- begin origin
- This makes the current point the origin. This is good for
- subroutines or something which has been drawn using
- amove,aline. Everything between the begin origin and end
- origin can be moved as one unit. The current point is also
- saved and restored.
-
- begin path [stroke] [fill pattern] [clip]
- Initialises the drawing of a filled shape. All the lines
- and curves generated until the next end path command will
- be stored and then used to draw the shape. stroke draws the
- outline of the shape, fill paints the inside of the shape
- in the given color and clip defines the shape as a clipping
- region for all future drawing. Clipping and filling will
- only work on PostScript devices.
-
- begin rotate angle
- The coordinate system is rotated anti-clockwise about the
- current point by the angle angle (in degrees). For example,
- to draw a line of text running vertically up the page (as a
- Y axis label, say), type:
-
- begin scale x y
- Everything between the begin and end is scaled by the
- factors x and y. E.g., scale 2 3 would make the picture
- twice as wide and three times higher.
-
- begin table
- This module is an alternative to the TEXT module. It reads
- the spaces and tabs in the source file and aligns the words
- accordingly. A single space between two words is treated as
- a real space, not an alignment space.
-
- With a proportionally spaced font columns will line up on
- the left hand side but not on the right hand side. However
- with a fixed pitch font, like tt, everything will line up.
-
- begin text [width exp]
- This module displays multiple lines/paragraphs of text. The
- block of text is justified according to the current justify
- setting. See the set just command for a description of
- justification settings.
-
- If a width is specified the text is wrapped and justified
- to the given width. If a width is not given, each line of
- text is drawn as it appears in the file. Remember that GLE
- treats text in the same way that LaTeXdoes, so multiple
- spaces are ignored and some characters have special
- meaning. E.g, \ ^ _ & { }
-
- To include Greek characters in the middle of text use a
- backslash followed by the name of the character. E.g.,
- 3.3\Omega S would produce ``3.3OS''.
-
- To put a space between the Omega and the S add a backslash
- space at the end. E.g., 3.3\Omega\ S produces ``3.3O S''
-
- Sometimes the space control characters (e.g. \:) are also
- ignored, this may happen at the beginning of a line of
- text. In this case use the control sequence \glasswhich
- will trick GLE into thinking it isn't at the beginning of a
- line. E.g.,
-
- text \glass \:\: Indented text
-
- There are several LaTeXlike commands which can be used
- within text, they are:
-
- ^{} Superscript
- _{} Subscript
- \\ Forced Newline
- \_ Underscore character
- \, .5em (em = width of the letter `m')
- \: 1em space
- \; 2em space
- \char{22} Any character in current font
- \chardef{a}{hello} Define a character as a macro
- \def\v{hello} Defines a macro
- \movexy{2}{3} Moves the current text point
- \glass Makes move/space work on beginning of line
- \rule{2}{4} Draws a filled in box, 2cm by 4cm
- \setfont{rmb} Sets the current text font
- \sethei{.3} Sets the font height (in cm)
- \setstretch{2} Scales the quantity of glue between words
- \lineskip{.1} Sets the default distance between lines of text
- \linegap{-1} Sets the minimum required gap between lines
-
- begin translate x y
- Everything between the begin and end is moved x units to
- the right and y units up.
-
- bezier x1 y1 x2 y2 x3 y3
- Draws a Bezier cubic section from the current point to the
- point (x3,y3) with Bezier cubic control points at the
- coordinates (x1,y1) and (x2,y2). For a full explanation of
- Bezier curves see the PostScript Language Reference Manual.
-
- bigfile filename.gle
- This command reads the file one line at a time, compiles
- each line and executes it. This means it can read any sized
- file. However, complex multi-line commands cannot be used.
- Subroutines can be used but not defined, inside the
- bigfile. Note: there is also a bigfile option in the
- graphing module for large datasets.
-
- box x y [justify jtype] [fill color] [name xxx] [nobox]
- Draws a box, of width x and height y, with its bottom left
- corner at the current point. If the justify option is used,
- the box will be positioned relative to the specified point.
- E.g., TL = top left, CC = center center, BL = bottom left,
- CENTRE = bottom centre, RIGHT = bottom right, LEFT = bottom
- left. See set just for a description of justification
- settings.
-
- If a fill pattern is specified, the box will be filled.
- Remember that white fill is different from no fill pattern
- - white fill will erase anything that was inside the box.
-
- circle radius [fill pattern]
- Draws a circle at the current point, with radius radius. If
- a fill pattern is specified the circle will be filled.
-
- closepath
- Joins the beginning of a line to the end of a line. I.e.,
- it does an aline to the end of the last amove.
-
- curve ix iy [ x1 y1 x y x y ... xn yn] ex ey
- Draws a curve starting at the current point and passing
- through the points (x1,y1) (xn,yn), with an initial slope
- of (ix,iy) to (x1,y1) and a final slope of (ex,ey). All the
- vectors are relative movements from the vector before.
-
- define marker markername subroutine-name
- This defines a new marker called markername which will call
- the subroutine subroutine-name whenever it is used. It
- passes two parameters, the first is the requested size of
- the marker and the second is a value from a secondary
- dataset which can be used to vary size or rotation of a
- marker for each point plotted.
-
- for var = exp1 to exp2 [step exp3] command [...] next var
- The for ... next structure lets you repeat a block of
- statements a number of times.
-
- GLE sets var equal to exp1 and then repeats the following
- steps.
-
- If var is greater than exp2 then GLE commands are skipped
- until the line after the next statement.
-
- The value exp3 is added to var.
-
- The statements between the for and next statement are
- executed. itemize
-
- If exp1 is greater than exp2 then the loop is not executed.
-
- grestore
- Restores the most recently saved graphics state. This is
- the simplest way to restore complicated transformations
- such as rotations and translations. It must be paired with
- a previous gsave command.
-
- gsave
- Saves the current graphics transformation matrix and the
- current point and the current color, font etc.
-
- if expression then command [...] else command [...] end if
- If expression evaluates to true, then execution continues
- with the statements up to the corresponding else, otherwise
- the statements following the else and up to the
- corresponding end if are executed.
-
- amove 3 3
- if xpos()=3 then
- text We are at x=3
- else
- text We are elsewhere
- end if
-
- Note: end if is not spelt endif.
-
- include filename
- The commands in filename are read just as if they were in
- the current GLE file. With a large include file GLE may run
- out of memory. If this happens, use the bigfile command
- instead of include. Note: there is also a bigfile option in
- the graphing module.
-
- join object1.just sep object2.just
- Draws a line between two named objects. An object is simply
- a point or a box which was given a name when it was drawn.
-
- The justify qualifiers are the standard GLE justification
- abbreviations (e.g. TL=top left, see set just for details)
-
- If sep is written as -, a line is drawn between the named
- objects e.g.
-
- join fred.tr - mary.tl
-
- Arrow heads can be included at both ends of the line by
- writing sep as <->. Single arrow heads are produced by <-
- and ->. Note that sep must be separated from object1.just
- and object2.just by white space.
-
- If the justification qualifiers are omitted, a line will be
- drawn between the centres of the two objects (clipped at
- the edges of the rectangles which define the objects).
-
- See Chapter 5 for an example of joining objects.
-
- marker marker-name [ scale-factor]
- Draws marker marker-name at the current point. The size of
- the marker is proportional to the current font size, scaled
- by the value of scale-factor if present. Markers are
- referred to by name, eg. square, diamond, triangle and
- fcircle. Markers beginning with the letter f are usually
- filled variants. Markers beginning with w are filled with
- white so lines are not visible through the marker. For a
- complete list of markers refer to Appendix A.1.
-
- postscript filename.eps width-exp height-exp
- Includes an encapsulated postscript file into a GLE
- picture, the postscript picture will be scaled up or down
- to fit the width given. On the screen you will just see a
- rectangle.
-
- Only the width-exp is used to scale the picture so that the
- aspect ratio is maintained. The height is only used to
- display a rectangle of the right size on the screen.
-
- rbezier x1 y1 x2 y2 x3 y3
- This command is identical to the BEZIER command except that
- the points are all relative to the current point.
-
- return exp
- The return command is used inside subroutines to return a
- value.
-
- reverse
- Reverses the direction of the current path. This is used
- when filling multiple paths in order that the Non-Zero
- Winding Rule will know which part of the path is `inside'.
-
- With the Non-Zero Winding Rule an imaginary line is drawn
- through the object. Every time a line of the object crosses
- it from left to right, one is added to the counter; every
- time a line of the object crosses it from right to left,
- one is subtracted from the counter. Everywhere the counter
- is non-zero is considered to be the `inside' of the drawing
- and is filled.
-
- rline x y [arrow end] [arrow start] [arrow both]
- Draws a line from the current point to the relative
- coordinates (x,y), which then become the new current point.
- If the current point is (5,5) then rline 3 -2 is equivalent
- to aline 8 3. The optional qualifiers on the end of the
- command will draw arrows at one or both ends of the line,
- the size of the arrow head is proportional to the current
- font size.
-
- rmove x y
- Changes the current point to the relative coordinate (x,y).
- If the current point is (5,5) then rmove 3 -2 is equivalent
- to amove 8 3.
-
- save objectname
- This command saves a point for later use with the join
- command.
-
- set cap butt | round | square
- Defines what happens at the end of a wide line.
-
- set color col
- Sets the current color for all future drawing operations.
- There are several pre-defined colors which can be specified
- by name.
-
- black, white, red, green, blue, cyan, magenta, yellow,
- grey10, grey20 ... grey90, shade1 ... shade5, grid1 ...
- grid5
-
- It is also possible to specify a grey scale as an
- expression with 0.0 = black and 1.0 = white.
-
- set dashlen dashlen-exp
- Sets the length of the smallest dash used for the line
- styles. This command MUST come before the set lstyle
- command. This may be needed when scaling a drawing by a
- large factor.
-
- set font font-name
- Sets the current font to font-name. Valid font-names are
- listed in Appendix A.2.
-
- There are three types of font: PostScript, LaTeXand
- Plotter. They will all work on any device, however
- LaTeXfonts are drawn in outline on a plotter, and so may
- not look very nice. PostScript fonts will be emulated by
- LaTeXfonts on non-PostScript printers.
-
- set fontlwidth line-width
- This sets the width of lines to be used to draw the stroked
- (Plotter fonts) on a PostScript printer. This has a great
- effect on their appearance.
-
- set hei character-size
- Sets the height of text. For historical reasons, concerning
- lead type and printing conventions, a height of 10cm
- actually results in capital letters about 6.5cm tall.
-
- set join mitre | round | bevel
- Defines how two wide lines will be joined together. With
- mitre, the outside edges of the join are extended to a
- point and then chopped off at a certain distance from the
- intersection of the two lines. With round, a curve is drawn
- between the outside edges.
-
- set just left | center | right | tl | etc...
-
- Sets the justification which will be used for text
- commands.
-
- set lstyle line-style
- Sets the current line style to line style number
- line-style. There are 9 predefined line styles (1--9). When
- a line style is given with more than one digit the first
- digit is read as a run length in black, the second a run
- length in white, the third a run length in black, etc.
-
- set lwidth line-width
- Sets the width of lines to line-width cm. A value of zero
- will result in the device default of about 0.02 cm, so a
- lwidth of .0001 gives a thinner line than an lwidth of 0.
-
- sub sub-name parameter1 parameter2 etc
- Defines a subroutine. The end of the subroutine is denoted
- with end sub. Subroutines must be defined before they are
- used.
-
- Subroutines can be called inside any GLE expression, and
- can also return values. The parameters of a subroutine
- become local variables. Subroutines are reentrant.
-
- sub tree x y a$
- amove x y
- rline 0 1
- write a$
- return x/y
- end sub
- @tree 2 4 "mytree" (Normal call to subroutine)
- slope = tree(2,4,"mytree") (Using subroutine in an expression)
-
- text unquoted-text-string
- This is the simplest command for drawing text. The current
- point is unmodified after the text is drawn so following
- one text command with another will result in the second
- line of text being drawn on top of the first. To generate
- multiple lines of text, use the begin text end text
- construct.
-
- text "Hi, how's tricks", said Jack!
-
- write string$
- This command is similar to text except that it expects a
- quoted string, string variable, or string expression as a
- parameter.
-
- The built in functions sqrt() and time$() are described in
- appendix A.3.
-
- commanddescription
-
- Expressions
- -----------
- Wherever GLE is expecting a number it can be replaced with
- an expression. For example
-
- rline 3 2
-
- and
-
- rline 9/3 sqrt(4)
-
- will produce the same result.
-
- An expression in GLE is delimited by white space, so it may
- not contain any spaces - ` rline 3*3 2' is valid but `
- rline 3 * 3 2' will not work.
-
- Or ` let d2 = 3+sin(d1)' will work and ` let d2= 3 +
- sin(d1) ' won't.
-
- Expressions may contain numbers, arithmetic operators ( +,
- -, *, /, ^(to the power of)), relational operators ( >, <,
- =>, <=, =, <>) boolean operators ( AND, OR), variables and
- built-in functions.
-
- When GLE is expecting a color or marker name (like `green'
- or `circle') it can be given a string variable, or an
- expression enclosed in braces).
-
- GLE provides a large number of built in functions, these
- are listed in Appendix A.3.
-
- Functions Inside Expressions
- ----------------------------
-
- xg(), yg()
- With these functions it is possible to move to a position
- on a graph using the graph's axis units. To draw a filled
- box on a graph, at position x=948, y=.004 measured on the
- graph axis:
-
- begin graph
- xaxis min 100 max 2000
- yaxis min -.01 max .01
- ...
- end graph
- amove xg(948) yg(.004)
- box 2 2 fill grey10
-
- xend(), yend()
- These functions return the end point of the last thing
- drawn. This is of particular interest when drawing text.
-
- text abc
- set color blue
- text def
-
- This would draw the def on top of the abc. To draw the def
- immediately following the abc simply do the following (Note
- that absolute move is used, not relative move):
-
- xpos(), ypos()
- Returns the current x and y points. commanddescription
-
- The Graph Module
- ----------------
- A graph should start with begin graph and end with end
- graph. The data to be plotted are organised into datasets.
- A dataset consists of a series of (X,Y) coordinates, and
- has a name based on the letter ``d'' and a number between 1
- and 99, eg. d1
-
- The name dn can be used to define a default for all
- datasets. Many graph commands described below start with d
- n. This would normally be replaced by a specific dataset
- number e.g.,
-
- d3 marker diamond
-
- For each xaxis command there is a corresponding yaxis,
- y2axis and x2axis command for setting the top left and
- right hand axes. These commands are not explicitly
- mentioned in the following descriptions.
-
- Graph Commands (a summary)
- --------------------------
- data filename [d1 d2 d3 ... ] [d1=c1,c3 ]
- dn bigfile "all.dat,xc,yc" [marker mname] [line]
- dn err d5 errwidth width-exp errup nn% errdown d4
- dn herr d5 herrwidth width-exp herrleft nn% errright d4
- dn key "Dataset title"
- dn line
- dn lstyle line-style lwidth line-width color col
- dn marker marker-name [msize marker-size] [mdata dn]
- dn nomiss
- dn smooth | smoothm
- dn xmin x-low xmax x-high ymin y-low ymax y-high
- fullsize
- hscale exp
- key pos tl nobox hei exp offset xexp yexp
- let ds = exp [from low to high step exp ]
- nobox
- size x y
- title "title" [hei ch-hei] [color col] [font font] [dist
- cm]
- vscale exp
- x2labels on
- xaxis | yaxis | x2axis | y2axis
- xaxis color col font font-name hei exp-cm lwidth exp-cm
- xaxis dsubticks sub-distance
- xaxis grid
- xaxis log
- xaxis min low max high dpoints n
- xaxis nofirst nolast
- xaxis nticks number dticks distance
- xaxis off
- xaxis shift cm-exp
- xlabels font font-name hei char-hei color col
- xnames "name" "name" ...
- xplaces pos1 pos2 pos3 ...
- xside color col lwidth line-width off
- xsubticks lstyle num lwidth exp length exp off
- xticks lstyle num lwidth exp length exp off
- xtitle "title" [hei ch-hei] [color col] [font font] [dist
- cm]
- y2title "text-string" [rotate]
-
- bar dx,... dist spacing
- bar dx,... from dy,...
- bar dn,... width xunits,... fill col,... color col,...
-
- fill x1, d3 color green xmin val xmax val
- fill d4,x2 color blue ymin val ymax val
- fill d3,d4 color green xmin val xmax val
- fill d4 color green xmin val xmax val
-
- Graph Commands (in detail)
- --------------------------
-
- data filename [d1 d2 d3 ... ] [d1=c1,c3 ]
- Specifies the name of a file to read data from. By default,
- the data will be read into the next free datasets unless
- the optional specific dataset names are specified.
-
- A dataset consists of a series of (X,Y) coordinates, and
- has a name based on the letter d and a number between 1 and
- 99, e.g. d1 or d4. Up to 99 datasets may be defined.
-
- From a file with 3 columns the command ` data xx.dat' would
- read the first and second columns as the x and y values for
- dataset 1 (d1) and the first and third columns as the x and
- y values for dataset 2 (d2). The next data command would
- use dataset 3 (d3).
-
- A data file for two datasets looks like this (*=missing
- value):
-
- 1 2.7 3
- 2 5 *
- 3 7.8 7
- 4 9 4
-
- The first coordinate of dataset d1 would then be ( 1,2.7)
- and the first coordinate of dataset d2 would be ( 1,3).
-
- The option d3=c2,c3 allows particular columns of data to be
- read into a dataset, d3 would read x values from column 2
- and y values from column 3.
-
- dn bigfile "all.dat,xc,yc" [marker mname] [line]
- The bigfile option allows a dataset to be read as it is
- drawn, (rather than being complete read into memory before
- it is drawn) this means that very large datasets can be
- drawn on a PC without running out of memory. The axis
- minimum and maximum must be specified (using the command
- xaxis min exp max exp.
-
- By default the first two columns of the data file will be
- read in, but other columns may be specified. E.g.,
- all.dat,3,2 would read x values from column 3 and y values
- from column 2. Or, to read the 4th dataset, specify the
- file as all.dat,1,5
-
- If the x column is specified as '0' then GLE will generate
- the x data points. E.g., 1,2,3,4,5...
-
- Many (but not all) of the normal dn commands can be used
- with the bigfile command. E.g., marker, lstyle, xmin, xmax,
- ymin, ymax, color and lwidth. You cannot use commands like
- let or bar with the bigfile command.
-
- dn err d5 errwidth width-exp dn errup nn% errdown d4
- For drawing error bars on a graph. The error bars can be
- specified as an absolute value, as a percentage of the y
- value, or as a dataset. The up and down error bars can be
- specified separately e.g.,
-
- d3 err .1
- d3 err 10%
- d3 errup 10% errdown d2
- d3 err d1 errwidth .2
-
- dn herr d5 herrwidth width-exp dn herrleft nn% errright d4
- These commands are identical to the error bar commands
- above except that they will draw bars in the horizontal
- plane.
-
- dn key "Dataset title"
- If a dataset is given a title like this a key will be
- drawn. Use the key command (below, after hscale) to set the
- size and position of the key. Use the key module (Chapter
- 4) to draw more complex keys.
-
- dn line
- This tells GLE to draw lines between the points of the
- dataset. By default GLE will not draw lines or markers,
- this is often the reason for a blank graph.
-
- If a dataset has missing values GLE will not draw a line to
- the next real value, which leaves a gap in the curve. To
- avoid this behavior simply use the nomiss qualifier on the
- dn command used to define the line. This simply throws away
- missing values so that lines are drawn from the last real
- value to the next real value.
-
- dn lstyle line-style lwidth line-width color col
- These qualifiers are all fairly self explanatory. See the
- lstyle command in Chapter~2 for details of specifying line
- styles.
-
- dn marker marker-name [msize marker-size] [mdata dn]
- Specifies the marker to be used for the dataset. There is a
- set of pre-defined markers (refer to Appendix A.1 for a
- list) which can be specified by name (e.g., circle, square,
- triangle, diamond, cross, ...). Markers can also be a
- user-defined subroutine (See the define marker command in
- Chapter 2). The mdata option allows a secondary dataset to
- be defined which will be used to pass another parameter to
- the marker subroutine, this allows each marker to be drawn
- at a different angle,size or color.
-
- The msize qualifier sets the marker size for that dataset.
- The size is a character height in cm, so that the actual
- size of the markers will be about 0.7 of this value.
-
- dn nomiss
- If a dataset has missing values, GLE will not draw a line
- to the next real value, which leaves a gap in the curve. To
- avoid this behavior simply use the nomiss qualifier on the
- dn command used to define the line. This simply ignores
- missing values.
-
- dn smooth | smoothm
- This will make GLE draw a smoothed line through the points.
- A third degree polynomial is fitted piecewise to the given
- points.
-
- The smoothm alternative will work for multi valued
- functions, i.e., functions which have more than one y value
- for each x value.
-
- dn xmin x-low xmax x-high ymin y-low ymax y-high
- These commands map the dataset onto the graph's boundaries.
- The data will be drawn as if the X axis was labelled from
- x-low to x-high (regardless of how the axis is actually
- labelled). A point in the dataset at X = x-low will appear
- on the left hand edge of the graph.
-
- fullsize
- This is equivalent to vscale 1, hscale 1, noborder. It
- makes the graph size command specify the size and position
- of the axes instead of the size of the outside border.
-
- hscale exp
- Scales the length of the yaxis. See vscale. The default
- value is 0.7.
-
- key pos tl nobox hei exp offset xexp yexp
- This command allows the features of a key to be specified.
- The pos qualifier sets the position of the key. E.g.,
- tl=topleft, br=bottomright, etc.
-
- let ds = exp [ from low to high step exp ]
- This command defines a new dataset as the result of an
- expression on the variable x over a range of values. It
- also allows the use of other datasets. E.g., to generate an
- average of two datasets:
-
- data aa.dat d1 d2
- let d3 = d1+d2/2
-
- Or to generate data from scratch:
-
- let d1 = sin(x)+log(x) from 1 to 100 step 1
-
- If the xaxis is a LOG axis then the step option is read as
- the number of steps to produce rather than the size of each
- step.
-
- NOTE: The spacing around the `=' sign and the lack of
- spaces inside the expression are necessary.
-
- nobox
- This removes the outer border from the graph.
-
- size x y
- Defines the size of the graph in cm. This is the size of
- the outside box of a graph. The default size of the axes of
- the graph will be 70% of this, (see vscale and hscale).
- This command is required.
-
- title "title" [hei ch-hei] [color col] [font font] [dist
- cm]
- This command gives the graph a centred title. The list of
- optional keywords specifies features of it. The dist
- command is used for moving the title up or down.
-
- vscale exp
- This sets the width of the axis relative to the width of
- the graph. For example with a 10cm wide graph and a vscale
- of .6 the x axis would be 6cm long. A setting of 1.0 makes
- the xaxis the same length as the width of the graph, which
- is useful for positioning some graphs. The default value is
- 0.7.
-
- x2labels on
- This command `activates' the numbering of the x2axis. There
- is a corresponding command ` y2axis on' which will activate
- y2axis numbering.
-
- xaxis | yaxis | x2axis | y2axis
- A graph is considered to have four axes: The normal xaxis
- and yaxis as well as the top axis (x2axis) and the right
- axis (y2axis).
-
- Any command defining an xaxis setting will also define that
- setting for the x2axis.
-
- The secondary axes x2 and y2 can be modified individually
- by starting the axis command with the name of that axis.
- E.g.,
-
- xaxis color col font font-name hei exp-cm lwidth exp-cm
- These axis qualifiers affect the color, lstyle, lwidth, and
- font used for drawing the xaxis (and the x2axis). These can
- be overriden with more specific commands. E.g., ` xticks
- color blue' would override the axis color when drawing the
- ticks. The subticks would also be blue as they pick up tick
- settings by default.
-
- xaxis dsubticks sub-distance
- See xaxis nticks below.
-
- xaxis grid
- This command makes the xaxis ticks long enough to reach the
- x2axis and the yaxis ticks long enough to reach the y2axis.
- When used with both the x and y axes this produces a grid
- over the graph. Use the xticks lstyle command to create a
- faint grid.
-
- xaxis log
- Draws the axis in logarithmic style, and scales the data
- logarithmically to match (on the x2axis or y2axis it does
- not affect the data, only the way the ticks and labelling
- are drawn)
-
- Be aware that a straight line should become curved when
- drawn on a log graph. This will only happen if you have
- enough points or have used the smooth option.
-
- xaxis min low max high dpoints n
- Sets the minimum and maximum values on the xaxis. This will
- determine both the labelling of the axis and the default
- mapping of data onto the graph. To change the mapping see
- the dataset dn commands xmin, ymin, xmax, and ymax.
-
- The dpoints option specifies the number of decimal points
- that should be displayed. e.g. with a value of 3 these
- numbers (0, 0.333333, 0.6666667, 1) would become (0.000,
- 0.333, 0.667, 1.000)
-
- xaxis nofirst nolast
- These two switches simply remove the first or last (or
- both) labels from the graph. This is useful when the first
- labels on the x and y axis are too close to each other.
-
- xaxis nticks number dticks distance
- nticks specifies the number of ticks along the axis. dticks
- specifies the distance between ticks and dsubticks
- specifies the distance between subticks. For example, to
- get one subtick between every main tick with main ticks 3cm
- apart, simply specify dsubticks 1.5.
-
- By default ticks are drawn on the inside of the graph. To
- draw them on the outside use the command:
-
- xticks length -.2
- yticks length -.2
-
- xaxis off
- Turns the whole axis off --- labels, ticks, subticks and
- line. Often the x2axis and y2axis are not required, they
- could be turned off with the following commands:
-
- x2axis off
- y2axis off
-
- xaxis shift cm-exp
- This moves the labelling to the left or right, which is
- useful when the label refers to the data between the two
- values.
-
- xlabels font font-name hei char-hei color col
- This command controls the appearance of the axis labels but
- not the axis title.
-
- xnames "name" "name" ...
- This command replaces the numeric labelling with absolutely
- anything. Given data consisting of five measurements, taken
- from Monday to Friday, one per day then
-
- xaxis min 0 max 6 dticks 1
- xnames "" "Mon" "Tue" "Wed" "Thu" "Fri" ""
-
- would give the desired result. Note it is essential to
- define a specific axis minimum, maximum, dticks, etc.,
- otherwise the labels may not correspond to the data.
-
- If there isn't enough room on the line for all the names
- then simply use an extra xnames command.
-
- xplaces pos1 pos2 pos3 ...
- This is similar to the xnames command but it specifies a
- list of points which should be labelled. This allows
- labelling which isn't equally spaced. The above example
- with days of the week could be written like this:
-
- xplaces 1 2 5
- xplaces 7
- xnames "Mon" "Tue" "Fri" "Sun"
-
-
- If there isn't enough room on the line for all the names
- then simply use an extra xplaces command.
-
- xside color col lwidth line-width off
- This command controls the appearance of the axis line, i.e.
- the line to which the ticks are attached.
-
- xsubticks lstyle num lwidth exp length exp off
- This command gives fine control of the appearance of the
- axis subticks.
-
- xticks lstyle num lwidth exp length exp off
- This command gives fine control of the appearance of the
- axis ticks. Note: To get ticks on the outside of the graph,
- i.e. pointing outwards, specify a negative tick length:
-
- xticks length -.2
- yticks length -.2
-
- xtitle "title" [hei ch-hei] [color col] [font font] [dist
- cm]
- This command gives the axis a centered title. The list of
- optional keywords specify features of it. The dist command
- is used for moving the title up or down.
-
- y2title "text-string" [rotate]
- By default the y2title is written vertically upwards. The
- optional rotate keyword changes this direction to
- downwards. The rotate option is specific to the y2title
- command.
-
- commanddescription
-
- Bar Graphs
- ----------
- Drawing a bar graph is a subcommand of the normal graph
- module. This allows bar and line graphs to be mixed. The
- bar command is quite complex as it allows a great deal of
- flexibility. The same command allows stacked, overlapping
- and grouped bars.
-
- For stacked bars use separate bar commands as in the first
- example below:
-
- bar d1 fill black
- bar d2 from d1 fill grey10
-
- For grouped bars put all the datasets in a list on a single
- bar command:
-
- bar d1,d2,d3 fill grey10,grey40,black
-
- bar dx,... dist spacing
- Specifies the distance between bars in dataset(s) dx,....
- The distance is measured from the left hand side of one bar
- to the left hand side of the next bar. A distance of less
- than the width of a bar results in the bars overlapping.
-
- bar dx,... from dy,...
- This sets the starting point of each bar in datasets dx,...
- to be at the value in datasets dy,..., and is used for
- creating stacked bar charts. Each layer of the bar chart is
- created with an additional bar command.
-
- bar d1,d2
- bar d3,d4 from d1,d2
- bar d5,d6 from d3,d4
-
- Note 1: It is important that the values in d3 and d4 are
- greater than the values in d1 and d2.
-
- Note 2: Data files for stacked bar graphs should not have
- missing values, replace the * character with the number on
- its left in the data file.
-
- bar dn,... width xunits,... fill col,... color col,...
- The rest of the bar qualifiers are fairly self explanatory.
- When several datasets are specified, separate them with
- commas (with no spaces between commas).
-
- bar d1,d2 width 0.2 dist 0.2 fill grey10,grey20 color red,green
-
- commanddescription
-
- Filling Between Lines
- ---------------------
-
- fill x1, d3 color green xmin val xmax val
- Fills between the xaxis and a dataset, use the optional
- xmin, xmax, ymin, ymax qualifiers to clip the filling to a
- smaller region
-
- fill d4,x2 color blue ymin val ymax val
- This command fills from a dataset to the x2axis.
-
- fill d3,d4 color green xmin val xmax val
- This command fills between two datasets.
-
- fill d4 color green xmin val xmax val
- This command treats the dataset as a polygon and fills it.
- The dataset should be a closed polygon.
-
- commanddescription
-
- Notes on Drawing Graphs
- -----------------------
-
- Importance of Order
- Most of the graph commands can appear in any order, but in
- some cases order is significant.
-
- As some let commands operate on data which has been read
- into datasets, the data commands should precede the let
- commands.
-
- The wildcard dn command should appear before specific d1
- commands which it will override.
-
- By default xaxis commands also change the x2axis, and
- xlabels commands also change x2labels, so to specify
- different settings for the x and x2 axes, put the x2
- settings after the x settings.
-
- begin graph
- size 10 10
- data a.dat
- let d2 = d1*3
- dn marker square lstyle 3 ! sets d1 and d2
- d2 marker dot
- xaxis color green
- xticks color blue
- x2axis color black
- end graph
-
- Line Width
- When scaling a graph up or down for publication the default
- line width may need changing. To do this simply specify a
- set lwidth command before beginning the graph.
-
- size 10 10
- set lwidth .1
- begin graph
- ...
- end graph
-
- The KEY module
- --------------
- This module is used for drawing keys for graphs. It is
- completely separate from the graph module.
-
- Specify a position for the key, the size of the lettering
- and then for each dataset specify marker, color, lstyle and
- fill pattern:
-
- begin graph
- ...
- end graph
- begin key
- hei .5
- position tr
- text "Green trees" marker heart msize .2 fill grey10
- text "Red trees" lstyle 3 marker heart fill blue
- text "Oranges" marker circle lstyle 6 fill black
- end key
-
- All commands to do with a particular line of the key module
- MUST appear on the same line.
-
- Key commands
- ------------
-
- offset x-exp y-exp
- Specifies the offset in cm from the current point to the
- bottom left hand corner of the graph. This command should
- be on a line of its own.
-
- position justify-exp
- This is an alternative to the OFFSET command. It allows you
- to specify a position on the graph, e.g., tl = top left.
- This command should be on a line of its own. See set just
- for a list of justify settings.
-
- text str-exp
- The text which will be displayed on the end of the line.
-
- lstyle style-num
- The line style which will be used for the short line drawn
- in the key.
-
- marker marker-name
- The marker which will be used for that line of the key.
-
- msize exp
- Specifies the size of the markers in cm.
-
- mscale exp
- Specifies how much to scale the size of the marker. E.g.,
- 0.5 would produce a marker half as big as normal.
-
- color color-name
- The colour of the text, line and marker.
-
- hei cm-exp
- This sets the height of the text used to draw the key. The
- key will change in size to fit around the text. If you omit
- this command the current font size is used.
-
- fill fill-pattern
- The fill pattern used in that line of the key.
-
- commanddescription
-
- Advanced features of GLE
- ------------------------
- This chapter covers the advanced features of GLE. Some of
- these features will not give exactly the same results on
- the PC screen as you would get when printing to a
- PostScript printer. E.g., clipping to an arbitrary shape is
- only implemented in the PostScript driver but most other
- features will give as close as possible representation
- given the limitations of the screen.
-
- Color
- -----
- Internally GLE treats color and fill identically, they are
- simply an intensity of Red, Green and Blue. Each of the
- predefined color names (yellow,grey20,orange,red) simply
- define the ratio of red, green and blue.
-
- There are two ways to use variables to show color, one is
- for shades of grey:
-
- for i = 0 to 10
- box 3 .2 fill (i/10)
- rmove 0 .2
- next i
-
- The other is for passing a color name as a variable:
-
- sub stick c$
- box .2 2 fill c$
- end sub
- @stick "green"
-
- Remember a fill pattern completely obscures what is behind
- it, so the following command would produce a box with a
- shadow:
-
- amove 4 4
- box 3 2 fill grey10
- rmove -.1 .1
- box 3 2 fill white
- rmove .4 .4
- text hellow
-
- Device Drivers
- --------------
- GLE supports the following devices.
-
- Interactive: IBM/PC (BGI), VT100, REGIS (VT125, VT240),
- TEK4010, VWS, XWindows.
-
- Output: PostScript, HPGL, EPSON, EPSON 24pin, HP Deskjet.
-
- Keyboard Mappings:
-
- VT100 VT200 PC Meaning
- GOLD 1 F11 F1 Help
- GOLD 2 F12 F2 Save
- GOLD 3 F13 F3 Load
- GOLD 4 F14 F4 Save-as
- GOLD 9 F9 F9 Graph-menu
- GOLD 0 F10 F10 Draw-it
- Control+Z Control+Z Control+Z Exit/Escape
- Alt+X Exit/Escape
- Control+E Control+E Calls VAX EDT
- Control+F Control+F Toggle fast/slow text
- Control+R Control+R F5 Shows errors
- Control+S Shells to DOS
-
- PC Screen Drivers
- Remember that what you see on the screen isn't always what
- you will get on the printer. For example filled regions
- will not be filled, and some characters may not look right.
-
- After pressing F10 and drawing the graph it can be
- annotated by using the mouse (or arrow keys) to draw lines,
- text and boxes. To draw lines simply click on the points of
- the line, use the right hand mouse button to `pick up' the
- pen.
-
- To draw text press the letter `t' and then click on where
- you would like the text to be drawn.
-
- All movements are rounded to the grid size settings which
- are 1.0cm, 0.1cm, 0.01cm etc.
-
- The height and color of the text/lines is determined by the
- current settings at the end of the GLE file.
-
- If there is no mouse driver loaded then a cross-hair will
- appear and it can be moved around using the arrow keys.
- Press `c' to click, instead of the mouse button.
-
- PostScript Driver
- To print a GLE file to the laser printer type:
-
- $ cgle myfile /print
-
- or on a PC:
-
- C:\GLE> psgle myfile
- C:\GLE> print myfile.ps
-
- The postscript drivers for GLE will automatically flip a
- picture to best fit onto the page, e.g. a wide graph (as
- defined by the size command at the top) will be drawn in
- landscape mode and a tall thin graph will be drawn in
- portrait mode.
-
- To produce an .eps file on a VAX for inclusion in LaTeXor
- WordPerfect you would type:
-
- $ cgle myfile /dev=eps
-
- On a PC you would type:
-
- C:\GLE> psgle myfile /eps
- (this creates myfile.eps, not myfile.ps)
-
- Inside your LaTeXdocument use the LaTeXcommand:
-
- \graphin{myfile.eps}{12.0cm}{3.0cm}{1.0}
-
- The width and height are used by LaTeXto reserve enough
- space for the drawing and the last parameter is a scale
- factor.
-
- The laser printer driver will draw all zero width lines
- .02cm wide for any line width equal to zero, but if an
- lwidth is greater than zero and less than or equal to .0001
- then it will use a line width of 1 pixel. Without this it
- would be impossible to specify a line width that didn't
- occasionally get rounded to 2 pixels.
-
- TEK4010 Driver
- This driver allows initialization sequences to be defined
- with the symbols TEK_OPEN and TEK_CLOSE.
-
- On a VAX this is normally done by CGLECMD.COM so that when
- you specify /DEV=V550 the assignments are done for you.
- (V550 = Visual 550)
-
- HPGL Driver
-
- Device Drivers>HPGL Driver
- This driver allows initialization sequences to be defined
- in the symbols HPGL_OPEN and HPGL_CLOSE. On the PC use
- environment variables and on the VAX use DCL symbols. Also
- HPGL_WIDTH and HPGL_HEIGHT can be defined for non A3
- plotters.
-
- On a VAX this is normally done by CGLECMD.COM so that when
- you specify /DEV=HPA4 the assignments are done for you.
-
- The HPGL driver assigns the following colors to pen
- numbers:
-
- 1=black, 2=red, 3=green, 4=blue, 5=magenta, 6=white
-
- PC Bitmap Drivers
- GLE supports the EPSON 8 and 24 pin and HP deskjet/laserjet
- printers. To support bitmap devices which require a large
- amount of memory GLE first writes a device independent file
- OUT.DVI, then the appropriate bitmap driver for your
- printer will read the OUT.DVI file and create a bitmap
- which it then prints to LPT1:
-
- C:> dvigle myfile (produces OUT.DVI)
- C:> dviepson (creates bitmap and prints to LPT1:)
-
- The output options are:
-
- C:> dviepson Standard EPSON printers
- C:> dviep24 24 Pin EPSON printers (180dpi)
- C:> dvilj HP Laser jet, Desk jet (150 dpi)
- C:> dvilj300 HP Laser jet, Desk jet (300 dpi)
-
- The high resolution drivers (dviep24, dvilj300) are
- significantly slower than the low resolution drivers so
- would only be used for final output.
-
- See the file AAREADME.GLE for the latest information on
- drivers.
-
- Fonts (font mapping)
- By default the generic fonts (rm, rmb, ss, tt etc) will all
- map to PLSR (plotter simplex roman) on BITMAP and HPGL
- drivers. To make this happen on other drivers put the
- command plotter fonts immediately after the size command at
- the top of the GLE file.
-
- A typical result of this change in fonts is that something
- that lines up on the screen will not line up when printed
- to an EPSON printer. If this happens then use the plotter
- fonts command.
-
- If a character is missing from a font, or isn't the
- particular variation you like, you can define a character
- to be from a different font in this way:
-
- \chardef{%}{{\setfont{texcmr}\char{37}}}
- \chardef{[}{{\setfont{texcmr}\char{91}}}
- \chardef{]}{{\setfont{texcmr}\char{93}}}
-
- On the PC some fonts may not be installed to save disk
- space. When one of the missing fonts is called for, a
- replacement font will be displayed, this may look terrible
- and some special characters may be completely wrong.
-
- More importantly if you use a font which does not have its
- font metric file installed (e.g. C:/GLE/FONTS/PLSR.FMT)
- then the PostScript driver will space the characters
- incorrectly. This can be fixed by extracting that
- particular metric file from the distribution file
- CGLE_FVE.ZIP using PKUNZIP.
-
- Diagrams, Joining Named Objects
- -------------------------------
- To draw lines between boxes which contain text, first name
- each box as it is drawn and then use the join command to
- draw the lines between the boxes.
-
- box 2 3 fill blue name square
- amove 5 5
- begin box add .1 name titlebox
- text Title
- end box
- join square.tr -> titlebox.bc
-
- These commands draw a line from the ``Top Right'' of the
- square to the ``Bottom Centre'' of the titlebox, with an
- arrow at the titlebox end.
-
- join square - titlebox
-
- would draw a line from the centre of the square to the
- centre of the titlebox but clipped correctly at the edges
- of both boxes.
-
- join square.tc <-> titlebox.v
-
- would draw a vertical line from the top centre of the
- square to the titlebox with arrows at both ends.
-
- Named points on each box:
-
- .bl Bottom left
- .bc Bottom centre
- .br Bottom right
- .cr Centre right
- .tr Top right
- .tc Top centre
- .tl Top left
- .cl Centre left
- .v Vertical line
- .h Horizontal line
- .cc Centre centre
- .ci Circle clipping (for drawing lines to a circle)
-
- To draw lines to a given point, simply move there and save
- that point as a named object.
-
- rmove 2 3
- save apoint
- join apoint - square
-
- Filling, Stroking and Clipping Paths
- ------------------------------------
- It is possible to set up arbitrary clipping regions. To do
- this draw a shape and make it into a path by putting a
- begin path clip ... end path, around it. Then draw the
- things to be clipped by that region. To clear a clipping
- path surround the whole section of GLE commands with begin
- clip ... end clip
-
- Characters can be used to make up clipping paths, but only
- the PostScript fonts will currently work for this purpose.
-
- Clipping doesn't work on the screen or p79 devices, but
- does on the laser printer. See example CLIP.GLE at end of
- manual.
-
- size 10 5
- begin clip ! Save current clipping path
- begin path clip stroke ! Define new clipping region
- amove 2 2
- box 3 3
- amove 6 2
- box 3 3
- end path
- amove 2 2
- set hei 3
- text Here is clipped text
- end clip ! Restore original clipping path
-
- Using Variables
- ---------------
- GLE has two types of variables, floating point and string.
- String variables always end with a dollar sign. A string
- variable contains text like ``Hello this is text'', a
- floating point variable can only contain numbers like
- 1234.234.
-
- name$ = "Joe"
- height = 6.5 ! Height of person
- shoe = .05 ! shoe adds to height of person
- amove 1 1
- box .2 height+shoe
- write name$
-
- Programming Loops
- -----------------
- The simple way to draw a 6 $$ 8 grid would be to use a
- whole mass of line commands:
-
- amove 0 0
- rline 0 8
- amove 1 0
- rline 1 8
- ...
- amove 6 0
- rline 6 8
-
- this would be laborious to type in, and would become
- impossible to manage with several grids. By using a simple
- loop this can be avoided:
-
- for x = 0 to 6
- amove x 0
- rline x 8
- next x
- for y = 0 to 8
- amove 0 y
- rline 6 y
- next y
-
- To draw lots of grids all of different dimensions a
- subroutine can be defined and then used again and again:
-
- ! define the subroutine
- sub grid nx ny
- gsave
- begin origin
- for x = 0 to nx
- amove x 0
- aline x ny
- next x
- for y = 0 to ny
- amove 0 y
- aline nx y
- next y
- end origin
- end sub
- ! now draw the grids wherever
- amove 2 4
- @grid 6 8
- amove 2 2
- @grid 9 5
-
- Now the main GLE file will be much easier to modify
- particularly if the subroutine definition is moved into a
- separate file:
-
- size 10 10
- include griddef.gle
- amove 2 4
- @grid 2 4
- amove 2 2
- @grid 9 5
-
- Tables
- ------
-
- Markers
- -------
-
- Fonts
- -----
-
- font-name Description
- rm Roman
- rmb Roman Bold
- rmi Roman Italic
- ss San Serif
- ssb San Serif Bold
- ssi San Serif Italic
- tt Typewriter
- ttb Typewriter Bold
- tti Typewriter Italic
-
-
- font-name Description
- psagb AvantGarde-Book
- psagbo AvantGarde-BookOblique
- psbd Bookman-Demi
- psbdi Bookman-DemiItalic
- psbl Bookman-Light
- psbli Bookman-LightItalic
- psc Courier
- pscb Courier-Bold
- pscbo Courier-BoldOblique
- psco Courier-Oblique
- psh Helvetica
- pshb Helvetica-Bold
- pshbo Helvetica-BoldOblique
- psho Helvetica-Oblique
- psncsb NewCenturySchlbk-Bold
- psncsi NewCenturySchlbk-Italic
- psncsr NewCenturySchlbk-Roman
- pspr Palatino-Roman
- pstr Times-Roman
- psti Times-Italic
- pstb Times-Bold
- pstbi Times-BoldItalic
- pszcmi ZapfChancery-MediumItalic
- pszd ZapfDingbats
- pssym Symbol
-
- font-name Description
- texcmb Computer Modern Bold
- texcmex Computer Modern Extensible
- texcmitt Computer Modern Italic Typewriter
- texcmmi Computer Modern Maths Italic
- texcmr Computer Modern Roman
- texcmss Computer Modern Sans Serif
- texcmssb Computer Modern Sans Serif Bold
- texcmssi Computer Modern Sans Serif Italic
- texcmsy Computer Modern Symbol
- texcmti Computer Modern Text Italic
- texcmtt Computer Modern Typewriter Text
-
- font-name Description
- plcc Complex Cartographic
- plcg Complex Gothic
- plci Complex Italic
- plcr Complex Roman
- plcs Complex Script
- pldr Duplex Roman
- plge Gothic English
- plgg Gothic German
- plgi Gothic Italian
- plsa Simplex Ascii
- plsg Simplex German
- plsr Simplex Roman
- plss Simplex Script
- plsym1 Symbols one
- plsym2 Symbols two
- plti Triplex Italic
- pltr Triplex Roman
- plba Block Ascii
-
- Functions
- ---------
-
- Function Name Returns
- TIME$() current time e.g. ``11:44:27''
- DATE$() current date e.g. ``Tue Apr 09 1991''
- LEFT$(str$,exp) left exp characters of str$
- RIGHT$(str$,exp) rest of str$ starting at exp
- SEG$(str$,exp1,exp2) str$ from exp1 to exp2
- NUM$(exp) string representation of exp
- NUM1$(exp) as above but with no spaces
- VAL(str$) value of the string str$
- POS(str1$,str2$,exp) position of str2$ in str1$ from exp
- LEN(str$) the length of str$
-
- Function Name Returns
- ABS(exp) absolute value of expression
- ATN(exp) arctan
- COS(exp) cosine
- EXP(exp) exponent
- FIX(exp) exp rounded towards 0
- INT(exp) integer part of exp
- LOG(exp) log to base e of exp
- LOG10(exp) log to base 10 of exp
- SGN(exp) returns 1 or -1.
- SIN(exp) sine of exp
- SQR(exp) exp squared
- TAN(exp) tangent of exp
- NOT(exp) logical not of exp
- RND(exp) random number from seed exp
- SQRT(exp) square root of exp
-
- Function Name Returns
- XEND() the x end point of a text string when drawn
- YEND() the y end point of a text string when drawn
- XPOS() the current x point
- YPOS() the current y point
- TWIDTH(str$) the width of str$ assuming current font, size
- THEIGHT(str$) the height of str$ assuming current font, size
- TDEPTH(str$) the depth of str$
- XG(xexp) converts units of last graph to abs cm.
- YG(yexp) converts units of last graph to abs cm. tabular
-
-